package backing;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import to.Departamento;
import to.Func_Dpto;
import to.Funcionario;
import util.JSFUtil;
import dao.AbstractDAO;
import dao.DepartamentoDAO;
import dao.FuncionarioDAO;

@ManagedBean
@ViewScoped
public class DepartamentoBacking {

	private List<Func_Dpto> listaFuncDepto;
	private List<Departamento> listaDepartamento;
	private Departamento departamentoSelecionado;

	Departamento deptoSalvar = new Departamento();
	FuncionarioDAO fDAO = new FuncionarioDAO();
	DepartamentoDAO dDAO = new DepartamentoDAO();

	AbstractDAO abDAO = new AbstractDAO();

	public DepartamentoBacking() {
		criaListaDepartamento();
	}

	public void salvarDepartamento() {

		try {

			if (deptoSalvar != null) {

				abDAO.saveOrUpdate(deptoSalvar);
				JSFUtil.addInfoMessage("Departamento cadastrado com sucesso!");
			}
			reset();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public void reset() {
		deptoSalvar = null;
		deptoSalvar = new Departamento();
	}

	public void criaListaFuncionario(Departamento dpto) {

		departamentoSelecionado = dpto;
		this.listaFuncDepto = new ArrayList<Func_Dpto>(
				fDAO.buscaTodosFuncionarios(departamentoSelecionado.getId()));
		deptoSalvar = departamentoSelecionado;

	}

	public void criaListaDepartamento() {

		this.listaDepartamento = new ArrayList<Departamento>(
				dDAO.buscaTodosDepartamento());

	}

	public List<Departamento> getListaDepartamento() {
		return listaDepartamento;
	}

	public void setListaDepartamento(List<Departamento> listaDepartamento) {
		this.listaDepartamento = listaDepartamento;
	}

	public Departamento getDeptoSalvar() {
		return deptoSalvar;
	}

	public void setDeptoSalvar(Departamento deptoSalvar) {
		this.deptoSalvar = deptoSalvar;
	}

	public List<Func_Dpto> getListaFuncDepto() {
		return listaFuncDepto;
	}

	public void setListaFuncDepto(List<Func_Dpto> listaFuncDepto) {
		this.listaFuncDepto = listaFuncDepto;
	}

	public Departamento getDepartamentoSelecionado() {
		return departamentoSelecionado;
	}

	public void setDepartamentoSelecionado(Departamento departamentoSelecionado) {
		this.departamentoSelecionado = departamentoSelecionado;
	}

}
